{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/mpbast0s/2025-2---PPGEE---INTRODU-O-AO-APRENDIZADO-DE-M-QUINA-/blob/main/codigo_aula4_funcao_custo.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "78220b29",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "78220b29"
      },
      "source": [
        "# Compreendendo a função custo\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "269658ca",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "269658ca"
      },
      "source": [
        "## Objetivo\n",
        "\n",
        "- Implementar e explorar a função `custo` utilizada na regressão linear com uma variável.\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "2ae5690d",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "2ae5690d"
      },
      "source": [
        "## Ferramentas\n",
        "\n",
        "Nesse código, você usará:\n",
        "- NumPy, uma biblioteca popular para cálculos matriciais, etc\n",
        "- Matplotlib, uma biblioteca popular para gerar figuras a partir de dados"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "2649614f",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "2649614f"
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "343c823e",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "343c823e"
      },
      "source": [
        "## Definição do Problema\n",
        "\n",
        "Você gostaria de estimar a tensão sobre um resistor com base no seu valor de corrente.\n",
        "\n",
        "Usaremos as mesmas amostras de dados que já utilizamos no código anterior:\n",
        "\n",
        "| Corrente (A)     | Tensão (V) |\n",
        "| -------------------| ------------------------ |\n",
        "| 0.2               | 21                      |\n",
        "| 4.5               | 430                      |\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "a80bf969",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "a80bf969"
      },
      "outputs": [],
      "source": [
        "x_trein = np.array([ 0.2,2.,5.,10.])       # característica\n",
        "y_trein = np.array([ 10.64975337,106.49753367,266.24383418,532.48766835])    # valor alvo"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "eb6e8b54",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "eb6e8b54"
      },
      "source": [
        "## Calculando o Custo\n",
        "\n",
        "O custo mede o quão bem o nosso modelo está estimando a tensão sobre o resistor.\n",
        "\n",
        "A equação para o custo com uma variável é:\n",
        "  $$J(w,b) = \\frac{1}{2m} \\sum\\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)})^2 \\tag{1}$$\n",
        "\n",
        "onde\n",
        "  $$f_{w,b}(x^{(i)}) = wx^{(i)} + b \\tag{2}$$\n",
        "  \n",
        "- $f_{w,b}(x^{(i)})$ é a nossa previsão para a amostra $i$ usando os parâmetros $w,b$.  \n",
        "- $(f_{w,b}(x^{(i)}) -y^{(i)})^2$ é o erro quadrático entre o valor alvo (medido) e a previsão (estimativa) feita pelo modelo.   \n",
        "- Esses erros são somados para todas as $m$ amostras e divididas por `2m` para produzir o custo $J(w,b)$.  \n",
        ">OBS: Nos slides da disciplina, o somatório vai tipicamente de 1 até m. Por outro lado, no código ele vai de 0 até m-1, já que em Python tem-se como zero a referência de indexação para vetores e matrizes\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "1e414f69",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "1e414f69"
      },
      "source": [
        "O código abaixo calcula o custo fazendo um loop que passa por cada uma das amostras. Para cada iteração do loop:\n",
        "- a saída do modelo `f_wb` é calculada (previsão)\n",
        "- a diferença (erro) entre a saída alvo e a previsão é calculada e elevada ao quadrado.\n",
        "- essa quantidade é adicionada ao custo total."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "id": "21c9688a",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "21c9688a"
      },
      "outputs": [],
      "source": [
        "def calcula_custo(x, y, w, b):\n",
        "    \"\"\"\n",
        "    Calcula a função custo no âmbito da regressão linear.\n",
        "    Argumentos da função:\n",
        "      x (ndarray (m,)): Conjunto de dados com m amostras\n",
        "      y (ndarray (m,)): Valores alvo de saída\n",
        "      w,b (escalar)   : Parâmetros do modelo\n",
        "    Retorna\n",
        "      custo_total (float): O custo de se usar w,b como parâmetros na regressão linear\n",
        "               para ajustar os dados\n",
        "    \"\"\"\n",
        "    # número de amostras de treinamento\n",
        "    m = x.shape[0]\n",
        "\n",
        "    soma_custo = 0\n",
        "    for i in range(m):\n",
        "        f_wb = w * x[i] + b\n",
        "        custo = (f_wb - y[i]) ** 2\n",
        "        soma_custo = soma_custo + custo\n",
        "    custo_total = (1 / (2 * m)) * soma_custo\n",
        "\n",
        "    return custo_total"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "f0516489",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "f0516489"
      },
      "source": [
        "## Função custo: uma visão intuitiva"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "e66fdec2",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "e66fdec2"
      },
      "source": [
        "O seu objetivo agora é encontrar um modelo $f_{w,b}(x) = wx + b$, com parâmetros $w,b$, que seja capaz de estimar com precisão a tensão sobre um resistor para uma dada corrente de entrada $x$. O custo é a medida do quão bem o modelo performa para os dados de treinamento em questão.\n",
        "\n",
        "A função custo (1) acima mostra que, se $w$ e $b$ podem ser selecionados tal que as previsões $f_{w,b}(x)$ são iguais aos dados em $y$, então o termo $(f_{w,b}(x^{(i)}) - y^{(i)})^2 $ será zero e o custo é minimizado totalmente. Neste exemplo simples que possui apenas dois pontos, você pode conseguir exatamente isso.\n",
        "\n",
        "No código anterior, você já encontrou valores para $w,b$ que resultam num modelo preciso. Insira esses valores no código abaixo e verifique o custo associado. Se necessário, refine os valores escolhidos para $w,b$ até que um custo $J(w,b)$ próximo de zero seja obtido."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 18,
      "id": "873cd691",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 468
        },
        "id": "873cd691",
        "outputId": "e18a0270-3765-47d3-ecf7-00aeb620e0db"
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Custo J para esse conjunto de parâmetros w,b: 2.4528817252447624e-05\n"
          ]
        }
      ],
      "source": [
        "w = 53.25\n",
        "b = 0\n",
        "\n",
        "# Calculando a tensão estimada para o modelo para as correntes em x_trein\n",
        "m    = x_trein.shape[0]\n",
        "f_wb = np.zeros(m)\n",
        "for i in range(m):\n",
        "    f_wb[i] = w * x_trein[i] + b\n",
        "\n",
        "J = calcula_custo(x_trein, y_trein, w, b)\n",
        "\n",
        "# Plotando a previsão feita pelo modelo\n",
        "plt.plot(x_trein, f_wb, c='b',label='Nosso modelo')\n",
        "\n",
        "# Plotando os dados medidos\n",
        "plt.scatter(x_trein, y_trein, marker='x', c='r',label='Valores dos dados')\n",
        "\n",
        "# Ajustando o rótulo do eixo y\n",
        "plt.ylabel('Tensão (em Volts)')\n",
        "# Ajustando o rótulo do eixo x\n",
        "plt.xlabel('Corrente (em Àmperes)')\n",
        "plt.legend()\n",
        "plt.show()\n",
        "\n",
        "print(f\"Custo J para esse conjunto de parâmetros w,b: {J}\")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "eda97809",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "eda97809"
      },
      "source": [
        "Note no código abaixo que, fixando o valor de $b$ em $b=0$, podemos verificar como é o gráfico da função custo $J$ em função do parâmetro $w$."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "id": "e8d1bbcf",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 449
        },
        "id": "e8d1bbcf",
        "outputId": "8041be54-f1d9-4918-e602-baf61ae6b67c"
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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ZlauXMnKlStZunQpjuNw4cKF6wpti8qOHefPQ82aZl2X556Dl1+2nUhExLW1bg1LlsCAAeYPRm+XK/PsvPHGG7Rr147ixYtTv359PvroIypXrsynn36qNbEk2/Lnh7RJt994A/74w24eERFX9tNPpuj4+pqrWSXrrrpcxMU++ugjGjduTP/+/bnrrrsICgrKrVziJdq3hzvvhNWrYeRImD7ddiIREdeUdgXWAw9AxYp2s7ibazqN5Wl0GsuudesgIgJ8fGDrVnNqS0REMhw4YApOSgps3Ah169pO5Bpy7DRWTExMtr7wHzoXIdnUoAE8+KC5ymD4cNtpRERczxtvmKJzzz0qOtfiqmXntttu47HHHmPDhg2XfU5CQgJTp06lRo0afPrppzkaULzDf/5jxvAsWQLLl9tOIyLiOo4ehbQVmfQH4bW56pidX375hTFjxnDvvfdSoEAB6tatS5kyZShQoADHjx/nl19+Yfv27dSpU4fx48fTunXrvMgtHqZSJXj8cXjrLTMHz8aNWutFRATgnXfgzBm49VZo1sx2GveU5TE7Z8+e5euvv2b16tUcOHCAs2fPUqJECW699VZatGhBjRo1cjtrrtGYHdfw55/mnHRioln3pUcP24lEROw6cwbKlTNHd+bPhy5dbCdyLbk6z46nUdlxHePGQWSk+eHeuRMKFLCdSETEnnfegSefhAoVzO9Ev2xdQ+35svr6naV/to4dO171OX5+foSGhnLvvfdy3333ZT2pyEWeegrefRdiYuDtt80pLRERb3ThArz+utl+5hkVneuRpVERQUFBV70VLFiQ3bt306VLF0aOHJnbucVDFSyYMZPymDHm0K2IiDf65BPYv98sqdO7t+007i3HT2MtXryYJ554ItuXrNuk01iuJSUF6tQxs4UOHmwuuRQR8SaOYwYkb90Ko0fD88/bTuSacmW5iKy48847qVevXk5/WvEi+fJlzBT6zjvw229284iI5LWlS03RKVzYLJgs1yfHy05wcDCfffZZTn9a8TLNm8O995rFQp97znYaEZG8NX68edu/PxQrZjeLJ9BMJuKyxo83S0jMnw9XmNNSRMSjbNgAK1eaAcmDB9tO4xlUdsRl3XILPPyw2R42zJzDFhHxdK+8Yt526wZhYXazeAqVHXFpL78MAQEQFQWLF9tOIyKSu3btgrSRIM8+azeL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\n"
          },
          "metadata": {}
        }
      ],
      "source": [
        "b = 0\n",
        "\n",
        "valores_para_w = np.array([ 49, 50, 51, 52, 53, 54, 55, 56, 57])\n",
        "\n",
        "qtdade_de_valores = valores_para_w.shape[0]\n",
        "\n",
        "J = np.zeros(qtdade_de_valores)\n",
        "\n",
        "for i in range(qtdade_de_valores):\n",
        "    w    = valores_para_w[i]\n",
        "    J[i] = calcula_custo(x_trein, y_trein, w, b)\n",
        "\n",
        "# Plotando o custo em J para diferentes valores de w\n",
        "plt.plot(valores_para_w, J, c='b')\n",
        "\n",
        "# Ajustando o rótulo do eixo y\n",
        "plt.ylabel('J(w)')\n",
        "# Ajustando o rótulo do eixo x\n",
        "plt.xlabel('w')\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "0c01197c",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "0c01197c"
      },
      "source": [
        "Alguns pontos podem ser destacados\n",
        "- O custo é minimizado para $b$ próximo de 0 e para $w$ próximo de 53. Tais resultados estão de acordo com os resultados vistos no último código.\n",
        "- Uma vez que o erro entre o valor medido e a previsão é elevado ao quadrado na função custo, o custo rapidamente cresce quando $w$ se distancia do seu valor ideal.\n",
        "- Se `w` e `b` forem selecionados de forma que $J=0$, isso significa que o modelo se ajusta perfeitamente aos dados."
      ]
    },
    {
      "cell_type": "markdown",
      "id": "54eabff4",
      "metadata": {
        "pycharm": {
          "name": "#%% md\n"
        },
        "id": "54eabff4"
      },
      "source": [
        "# Parabéns!\n",
        "Você aprendeu o seguinte nesse código:\n",
        " - A função custo nos fornece uma medida de quão boas são as estimativas feitas pelo nosso modelo\n",
        " - Minimizar a função custo pode nos levar a valores ótimos para $w$, $b$."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "id": "5e2f2d66",
      "metadata": {
        "pycharm": {
          "name": "#%%\n"
        },
        "id": "5e2f2d66"
      },
      "outputs": [],
      "source": []
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3 (ipykernel)",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.9.12"
    },
    "toc-autonumbering": false,
    "colab": {
      "provenance": [],
      "include_colab_link": true
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}